"""
    有5个人坐在一起,问第5个人多少岁,他说比第四个人大2岁,问第四个人多少岁,说比第三个人大两岁
	一直问到第一个人说.他10岁
    
    等差数列: 递归
    
    递归: 自己调用自己  在函数内部调用函数本身.
"""

def age(n):
    if n == 1:
        return 10
    return age(n-1) + 2

"""
    5 : age(4) + 2
    4 : age(3) + 2
    3 : age(2) + 2
    2 : age(1) + 2
"""
print(age(5))

"""
    递归常见的问题:
        1.斐波那契数列    1 1 2 3 5 8 13 21 34 55 89
            1.1. 汉诺塔
            1.2. 生兔子
        2. 阶乘     
"""

def fo(n):
    if n == 1 or n == 2:
        return 1
    return fo(n-1) + fo(n-2)
 
"""
    fo(10): fo(9) + fo(8)
    
        fo(9) : fo(8) + fo(7)
        fo(8) : fo(7) + fo(6)

"""
 
print(fo(11))



def jc(n):
    if n == 1:
        return 1
    return n*jc(n-1)

"""
    jc(5)
        5*jc(4)
        4*jc(3)
        3*jc(2)
        2*jc(1)
"""
print(jc(5))



"""
    练习题:    
        随机输入任意5个字符.以相反的顺序打印出来(要求使用递归实现!)
"""












